#ifndef __WS_RESPONSE_H__
#define __WS_RESPONSE_H__

#include "ws_server_c.h"
#include "ws_version.h"

int wsCommonResponse(int cmd, int module_id, int type, int code);
int wsCommonResWithInt(int cmd, int module_id, int type, int value, int code);
int wsCommonResWithDouble(int cmd, int module_id, int type, double value, int code);
int wsResTrackResult(int cmd, int module_id, int type, int x, int y, int w, int h, double score);

int wsResMotor(int cmd, int module_id, int type, int id, int code);
int wsResMotorPosition(int cmd, int module_id, int type, int id, int code, double position);
int wsResCheckDarkFrame(int cmd, int module_id, int type, int code, int progress);
int wsResGetAllParams(int cmd, int module_id, int type, int code, int exp_mode, int exp_index, int gain_mode, int gain_index, int ircut_value,
                        int wb_mode, int wb_ct_index, int wb_sence_index, int brightness, int contrast, int hue, int saturation, int sharpness, int jpg_quality);
int wsResNotifyPictureMatching(int cmd, int module_id, int type, int code, int x, int y, int width, int height, double value);
int wsResNotifySDcardInfo(int cmd, int module_id, int type, int code, int available_size, int total_size);
int wsResNotifyRecordTime(int cmd, int module_id, int type, int time);
int wsResNotifyTimelapseOutTime(int cmd, int module_id, int type, int interval, int out_time, int total_time);
int wsResNotifyOperationState(int cmd, int module_id, int type, int state);
int wsResNotifyAstroCalibrationState(int cmd, int module_id, int type, int state, int plate_solving_times = 0);
int wsResNotifyAstroGotoState(int cmd, int module_id, int type, int state);
int wsResNotifyAstroTrackingState(int cmd, int module_id, int type, int state, std::string& target_name);
int wsResNotifyAstroSpecialTrackingState(int cmd, int module_id, int type, int state, std::string& target_name, int index);
int wsResNotifyProgressCaptureRawDark(int cmd, int module_id, int type, int progress, int remaining_time);
int wsResNotifyProgressCaptureRawLiveStacking(int cmd, int module_id, int type, int total_count, int update_count_type, int current_count, int stacked_count, int exp_index, int gain_index, std::string& target_name);

int wsResNotifyParam(int cmd, int module_id, int type, bool has_auto, int auto_mode, int id, int mode_index, int index, double continue_value);
int wsResNotifyCamFunctionState(int cmd, int module_id, int type, int function_id ,int state);
int wsResNotifySentryModeState(int cmd, int module_id, int type, int state);
int wsResGetAllFeatureParams(int cmd, int module_id, int type, int code, int astro_binning, int astro_img_to_take, int astro_format, int burst_count, int time_lapse_interval, int time_lapse_total_time, int panorama_row,
                                int panorama_col, int astro_display_source, int burst_count_index, int burst_interval_index, WsVersion ws_version);
int wsResNotifyBurstProgress(int cmd, int module_id, int type, int total_count, int completed_count);
int wsResNotifyPanoramaProgress(int cmd, int module_id, int type, int total_count, int completed_count);
int wsResNotifyRgbState(int cmd, int module_id, int type, int state);
int wsResNotifyPowerIndState(int cmd, int module_id, int type, int state);
int wsResNotifyHostSlaveMode(int cmd, int module_id, int type, int mode, const std::string& client_id, bool lock_master);
int wsResNotifyMTPState(int cmd, int module_id, int type, int mode);
int wsResNotifyTrackResult(int cmd, int module_id, int type, int x, int y, int w, int h);
int wsResNotifyCPUMode(int cmd, int module_id, int type,int mode);
int wsResNotifyPowerOff(int cmd, int module_id, int type);

int wsResITipsGet(int cmd, int module_id, int type, int code, int mode, const std::string& itips_code);
int wsNotifyAlbumUpdate(int cmd, int module_id, int type, int media_type);

#endif